home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swags_z.zip / SORTING.SWG / 0040_QUICK SORTER.pas < prev    next >
Pascal/Delphi Source File  |  1993-11-21  |  2KB  |  92 lines

  1. {
  2. From: BOB SWART
  3. Subj: Sorting...
  4. ---------------------------------------------------------------------------
  5.  Does anyone know of a VERY fast way to sort something?  I would
  6.  really like  to view some source code on this if possible.  I need to
  7.  sort over 1200  strings, and do it rather quickly.
  8.  
  9.  Try this, it uses a TStringCollection...
  10. }
  11.  
  12. {$IFDEF VER70}
  13. {$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,P-,Q-,R-,S+,T-,V-,X-}
  14. {$ELSE}
  15. {$A+,B-,D-,E-,F-,G-,I-,L-,N-,O-,R-,S+,V-,X-}
  16. {$ENDIF}
  17. {$M 16384,0,655360}
  18. {
  19.   Sorteer 3.0
  20.   Borland Pascal (Objects) 7.0.
  21.   Copr. (c) 9-29-1993 DwarFools & Consultancy drs. Robert E. Swart
  22.                       P.O. box 799
  23.                       5702 NP  Helmond
  24.                       The Netherlands
  25.   Code size: 5824 Bytes
  26.   Data size: 1254 Bytes
  27.   .EXE size: 4971 Bytes
  28.   ----------------------------------------------------------------
  29.   Authors: Bob Swart (2:281/256.12)
  30.            Hans van der Veeke (2:282/517.2)
  31. }
  32. uses {$IFDEF WINDOWS}
  33.      WinCrt,
  34.      {$ENDIF}
  35.      Objects;
  36.  
  37. Type
  38.   PStr = ^TStr;
  39.   TStr = object(TObject)
  40.            StrName: PString;
  41.            constructor Init(_StrName: String);
  42.          end {TStr};
  43.  
  44.   constructor TStr.Init(_StrName: String);
  45.   begin
  46.     TObject.Init;
  47.     StrName := NewStr(_StrName)
  48.   end {Init};
  49.  
  50. Type
  51.   PStrColl = ^TStrColl;
  52.   TStrColl = object(TStringCollection)
  53.                function KeyOf(Item: Pointer): Pointer; virtual;
  54.              end {TStrColl};
  55.  
  56.   function TStrColl.KeyOf(Item: Pointer): Pointer;
  57.   begin
  58.     KeyOf := PStr(Item)^.StrName
  59.   end {KeyOf};
  60.  
  61. var StrColl: PStrColl;
  62.     Line: String;
  63.     F: Text;
  64. begin
  65.   writeln('Sorteer - Sort strings (c) 1993 by Bob Swart & Hans van der Veeke.'#13#10);
  66.   if ParamCount = 0 then
  67.   begin
  68.     writeln('Usage: Sorteer [ASCII file to be sorted]');
  69.     Halt(0)
  70.   end;
  71.   Assign(F,ParamStr(1));
  72.   reset(F);
  73.   if IOResult <> 0 then
  74.   begin
  75.     writeln('Error - could not open file ',ParamStr(1));
  76.     Halt(1)
  77.   end;
  78.   StrColl := New(PStrColl,Init(1000,500));
  79.   StrColl^.Duplicates := True; { make False for NO duplicates }
  80.   while not Eof(F) do
  81.   begin
  82.     readln(F,Line);
  83.     if Length(Line) > 0 then StrColl^.Insert(New(PStr, Init(Line)))
  84.   end;
  85.   Close(F);
  86.   while StrColl^.Count > 0 do
  87.   begin
  88.     writeln(PStr(StrColl^.At(0))^.StrName^); { print first element }
  89.     StrColl^.AtFree(0); { delete and dispose first element StrColl }
  90.   end
  91. end.
  92.